# !python
# -*- coding: utf-8 -*-

import os
import shutil

def copydirs(from_file, to_file):
    if not os.path.exists(to_file):  # 如不存在目标目录则跳过
        return
    files = os.listdir(from_file)  # 获取文件夹中文件和目录列表
    for f in files:
        if os.path.isdir(os.path.join(from_file, f)):  # 判断是否是文件夹
            copydirs(os.path.join(from_file, f), os.path.join(to_file, f))  # 递归调用本函数
        elif os.path.isfile(os.path.join(from_file, f)) and os.path.exists(os.path.join(to_file, f)):

            ## 拷贝至 to 目录
            if f.endswith(".h") or f.endswith(".hpp") or f.endswith(".cc") or f.endswith(".c"):
                shutil.copy(os.path.join(from_file, f), os.path.join(to_file, f))  # 拷贝文件

def remove_older_files(target_dir, compare_dir):
    '''
    删除target_dir目录下有，而compare_dir目录下没有的文件
    '''

    if os.path.isfile(target_dir):
        if not os.path.exists(compare_dir):  
            if not (target_dir.endswith(".h") or target_dir.endswith(".hpp") or target_dir.endswith(".cc") or target_dir.endswith(".c")):
                return
            if (target_dir.count("rnnoise") > 0):
                return
            if (target_dir.count("pffft") > 0):
                return
            print("delete file %s" % target_dir)
            os.remove(target_dir)

    else:
        files = os.listdir(target_dir)  # 获取文件夹中文件和目录列表
        for f in files:
        # if os.path.isdir(os.path.join(target_dir, f)):  # 判断是否是文件夹
            if f != 'test':
                remove_older_files(os.path.join(target_dir, f), os.path.join(compare_dir, f))  # 递归调用本函数



from_dir = 'F:/open-sources/webrtc'
to_dir = 'D:/open-sources/my-git/webrtc-audio-processing/webrtc'
copydirs(from_file=from_dir, to_file=to_dir)
remove_older_files(target_dir=to_dir, compare_dir=from_dir)